home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’97 / Whack-A-Bill / source code / hidembar.h < prev    next >
Text File  |  1997-06-27  |  2KB  |  90 lines

  1. void HideMenuBar( void );
  2. void ShowMenuBar( void );
  3.  
  4. Rect        menuBarRect;
  5. short        menuBarHeight;
  6. RgnHandle    originalGrayRgn, newGrayRgn, underBarRgn;
  7.  
  8.  
  9. //***********************
  10. void HideMenuBar( void )
  11. {
  12.     GDHandle        mainScreen;
  13.     Rect            mainScreenBounds;
  14.     RgnHandle        mainScreenRgn;
  15.     GrafPtr            windowPort;
  16.     GrafPtr            oldPort;
  17.     WindowPtr        frontWindow;
  18.     
  19.     // get the gdhandle of the main screen which
  20.     // is the screen with the menubar
  21.     mainScreen = GetMainDevice();
  22.     mainScreenBounds = ( *mainScreen )->gdRect;
  23.     
  24.     // get new region encompassing entire screen
  25.     // including area under menu bar and corners
  26.     mainScreenRgn     = NewRgn();
  27.     newGrayRgn         = NewRgn();
  28.     underBarRgn     = NewRgn();
  29.     RectRgn( mainScreenRgn, &mainScreenBounds );
  30.     UnionRgn( mainScreenRgn, originalGrayRgn, newGrayRgn );
  31.     DiffRgn( newGrayRgn, originalGrayRgn, underBarRgn );
  32.     DisposeRgn( mainScreenRgn );
  33.     
  34.     // Set gray region to entire screen
  35.     LMSetGrayRgn( newGrayRgn );
  36.     
  37.     GetPort( &oldPort );
  38.     GetWMgrPort( &windowPort );
  39.     SetPort( windowPort );
  40.     SetClip( newGrayRgn );
  41.     
  42.     // redraw the desktop to draw over the menu bar
  43.     PaintOne( nil, newGrayRgn );
  44.     
  45.     // in case any part of a window is covered
  46.     // redraw it and recalculate the visible region
  47.     frontWindow = FrontWindow();
  48.     PaintOne( ( WindowRef )frontWindow, underBarRgn );
  49.     PaintBehind( ( WindowRef )frontWindow, underBarRgn );
  50.     CalcVis( ( WindowRef )frontWindow );
  51.     CalcVisBehind( ( WindowRef )frontWindow, underBarRgn );
  52.     
  53.     // set menu bar height to 0
  54.     LMSetMBarHeight( 0 );
  55.     
  56.     // Restore the port
  57.     SetPort( oldPort );
  58.     
  59. }//HideMenuBar
  60.  
  61.  
  62. //***********************
  63. void ShowMenuBar( void )
  64. {
  65.     WindowPtr    frontWindow;
  66.     GrafPtr        windowPort;
  67.     GrafPtr        oldPort;
  68.     
  69.     // Reset the menu bar height
  70.     LMSetMBarHeight( menuBarHeight );
  71.     
  72.     // Restore the original gray region
  73.     LMSetGrayRgn( originalGrayRgn );
  74.     
  75.     frontWindow = FrontWindow();
  76.     CalcVis( (GrafPort *)frontWindow );
  77.     CalcVisBehind( ( WindowRef )frontWindow, newGrayRgn );
  78.     
  79.     // Reset the clipping regions of the window mgr port
  80.     GetPort( &oldPort );
  81.     GetWMgrPort( &windowPort );
  82.     SetPort( windowPort );
  83.     SetClip( newGrayRgn );
  84.     SetPort( oldPort );
  85.  
  86.     // Redraw the menu bar
  87.     HiliteMenu( 0 );
  88.     DrawMenuBar();    
  89. }
  90.